package br.edu.universo.si.projeto2.infojob.server.persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;

import br.edu.universo.si.projeto2.infojob.client.bean.BeanTitularidade;
import br.edu.universo.si.projeto2.infojob.server.Database;

/**
 * Classe de persistência de títularidade.
 * @author Andrey A. de Oliveira
 */
public class PTitularidade
{
	/**
	 * Busca todas as titularidades existentes.
	 * @author Andrey A. de Oliveira
	 * @return HashMap<Integer, String>
	 * @throws ClassNotFoundException
	 * @throws Exception
	 */
	public static HashMap<Integer, String> getTitularidades()
			throws ClassNotFoundException, Exception {
		HashMap<Integer, String> titularidades = new HashMap<Integer, String>(1);

		Database database = Database.getInstance();
		Statement stm = database.getStatement();

		String query = "SELECT * FROM infojob.tb_titularidade; ";

		ResultSet rs = stm.executeQuery(query);
		while (rs.next())
		{
			int id = rs.getInt("id");
			String titularidade = rs.getString("titularidade");

			titularidades.put(id, titularidade);
		}

		return titularidades;
	}

	/**
	 * Busca uma Titularidade pelo ID.
	 * @author Andrey A. de Oliveira
	 * @param idTitularidade
	 * @return BeanTitularidade
	 * @throws ClassNotFoundException
	 * @throws SQLException
	 */
	public static BeanTitularidade getTitularidadeById(Integer idTitularidade)
			throws ClassNotFoundException, SQLException {
		Database database = Database.getInstance();

		PreparedStatement pStmt = database
				.getPreparedStatement("SELECT * FROM infojob.tb_titularidade WHERE id = ?; ");

		pStmt.setInt(1, idTitularidade);

		ResultSet rs = pStmt.executeQuery();

		if (rs.next()) {
			BeanTitularidade bTitularidade = new BeanTitularidade();

			bTitularidade.setId(rs.getInt("id"));
			bTitularidade.setTitularidade(rs.getString("titularidade"));

			return bTitularidade;
		}

		return null;
	}
}